package com.cskaoyan.javase.method._0introduction;

/**
 * @description: 使用方法改造案例, 船新的版本
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 现在有三个需求：
 * - 编写程序，计算10+20，并输出结果
 * - 编写程序，计算111+222，并输出结果
 * - 编写程序，计算333+444，并输出结果
 *
 * 使用方法改进三个需求的代码
 * 方法定义的语法:
 *      [修饰符列表] 返回值类型 方法名 (形式参数列表){
 * 	        //方法体
 *       }
 * 在解释每个构成之前,先看两个概念:
 *      a.方法的声明,指的是"[修饰符列表] 返回值类型 方法名 (形式参数列表)" 组成的部分,相对于方法体,很多时候也把方法的声明叫"方法头"
 *      b.方法的签名,指的是"方法名 (形式参数列表)"组成的部分,它可以用来代表一个方法
 *
 * 逐个解释方法的定义:
 *      a.[修饰符列表],是由一系列能够修饰方法的修饰符,包括访问权限修饰符,以及其他的一些修饰符.限于目前的学习进度,我们默认方法的修饰符列表是public static. 其次方法的修饰符列表完全可以不要,完全可以省略
 *      b.返回值类型,指的是返回值的数据类型.它可以是基本数据类型,也可以是引用数据类型
 *          返回值,指的是方法在实现功能,可能给出的结果(方法可以有结果,也可以没结果)
 *      c.方法名,在调用方法时用于指代方法结构的名称,它是一个字符串,是一个标识符
 *          方法名的命名应该遵循小驼峰式的命名规范
 *          其次,因为方法多数是为了实现功能,一般都使用动词,只要能够通过名字知道方法的作用即可"见名知意"
 *      d.形式参数列表,由形式参数组成的列表,它可能是1个,也可能是多个,也可以没有.如果有多个,用","隔开
 *          形式参数,方法在调用时是可能需要传入一些数据的,那么这些数据是什么类型呢?就是由形式参数指定的
 *              所以形式参数用于告诉方法的调用者,需要传入什么类型的数据
 *              与此同时,参数传入后有可能在方法内部去使用,所以这个参数还需要一个名字
 *              所以形式参数的语法是: 数据类型 变量名
 *              形式参数简称形参
 *      e.方法体,就是方法调用后要执行的一些语句
 *
 * 语法搞明白后,就可以开始定义方法了
 *
 * 方法必须定义在类体中,不能嵌套定义方法,必须定义在方法的外部
 *
 * 如果你在方法的声明中明确指出方法是有返回值的,那么在方法体就必须使用return关键字,给出方法的返回值
 *
 * main方法是java程序的入口方法,如果想要一个方法被执行,必须直接或者间接在main方法中调用它,不调用不执行
 *
 * 在main方法中怎么调用其它方法?
 *      在同一类中,在main方法中,对于有"static"关键字修饰的方法,直接使用方法名调用它
 *
 * 对于形参列表明确指出需要参数的方法,需要在调用的时候给出具体的参数,这些具体的参数称之为实际参数,简称"实参"
 *
 * 对于有返回值的方法,操作它的方法调用,就是操作它的返回值
 *
 * 在Java当中,方法定义的位置不会影响方法的调用
 *
 */
public class NewDemo {

    public static void main(String[] args) {
       /* //Result of 'NewDemo.sum()' is ignored
        int sumValue = sum(1, 1);
        System.out.println(sumValue);*/

        System.out.println(sum(10, 10) * 2);
    }

    //定义一个方法: 用于计算两个int类型数值的和
    //Return value of the method is never used
    //Access can be private 权限可以私有(挖坑,面向对象再讲)
    public static int sum(int num1, int num2) {
        //Missing return statement
        //Local variable 'sum' is redundant
        /*int sumValue = num1 + num2;
        return sumValue;*/
        return num1 + num2;
    }


}
